home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.51
/
xpk-kp
/
xupdemo.p
< prev
next >
Wrap
Text File
|
1995-08-27
|
1KB
|
74 lines
program XupDemo;
uses Dos,Exec;
{$incl 'xpk.lib'}
const Name = 'RAM:Test'; {gepackte Testdatei}
var TmpName,ErrBuf : str;
shelp : string;
InLock,InHdl : BPTR;
InFib : FileInfoBlock; STATIC;
ok,InSize,anz,err,i : long; STATIC;
ok2 : boolean; STATIC;
InBuf : ptr; STATIC;
Tags : array[0..5] of TagItem; STATIC;
begin
OpenLib(DosBase,'dos.library',36);
InLock:=Lock(Name,EXCLUSIVE_LOCK);
InHdl:=OpenFromLock(InLock);
if InHdl=0 then begin
Error('Cannot open File');
end;
ok:=Examine(InLock,^InFib);
if InFib.fib_DirEntryType>0 then
Error('This is a Directory....');
InSize:=InFib.fib_Size;
InBuf:=AllocVec(InSize,MEMF_PUBLIC);
if InBuf=Nil then
Error('Not enough memory for Load-Buffer');
anz:=_Read(InHdl,InBuf,InSize);
if anz<>InSize then
Error('Error while reading File');
writeln( 'File: ',InFib.fib_FileName);
writeln( 'Size: ',InSize,' Bytes');
OpenLib(XpkMasterBase,XPKNAME,0);
shelp:=Name+'.xtmp';
TmpName:=^shelp;
Tags[1]:=TagItem(XPK_InBuf,long(InBuf));
Tags[2]:=TagItem(XPK_InLen,InSize);
Tags[3]:=TagItem(XPK_OutName,long(TmpName));
Tags[4]:=TagItem(XPK_GetError,long(ErrBuf));
Tags[5].ti_Tag:=0;
err:=XpkUnpack(^Tags[1]);
writeln(ErrBuf);
FreeVec(InBuf);
UnLock(InLock);
err:=DeleteFile(Name);
err:=Rename(TmpName,Name);
end.